package org.geo.common.util;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

/**
 * 时间工具
 *
 * @author ljy
 */
public class TimeUtil {
    /**
     * 日期格式：yyyy:MM:dd
     */
    public static final String DATE_PATTERN_COLON = "yyyy:MM:dd";
    /**
     * 日期格式：yyyy年MM月dd日
     */
    public static final String DATE_PATTERN_CHAR = "yyyy年MM月dd日";
    /**
     * 日期格式：yyyy
     */
    private static final String YEAR_PATTERN = "yyyy";
    /**
     * 日期格式：MM
     */
    private static final String MONTH_PATTERN = "MM";
    /**
     * 日期格式：dd
     */
    private static final String DAY_PATTERN = "dd";

    /**
     * @return 以秒为单位的当前时间戳
     */
    public static long getCurrentTimeInSecond() {
        return System.currentTimeMillis() / 1000;
    }

    /**
     * @return 以毫秒为单位的当前时间戳
     */
    public static long getCurrentTimeInMillSecond() {
        return System.currentTimeMillis();
    }

    /**
     * 获取当前日期
     *
     * @param pattern 格式化表达式
     * @return 字符串格式的日期
     */
    public static String getCurrentDate(String pattern) {
        LocalDate currentDate = LocalDate.now();
        return currentDate.format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 获取当前年份
     *
     * @return 字符串格式的年份
     */
    public static String getCurrentYear() {
        LocalDate currentDate = LocalDate.now();
        return currentDate.format(DateTimeFormatter.ofPattern(YEAR_PATTERN));
    }

    /**
     * 获取当前月份
     *
     * @return 字符串格式的月份
     */
    public static String getCurrentMonth() {
        LocalDate currentDate = LocalDate.now();
        return currentDate.format(DateTimeFormatter.ofPattern(MONTH_PATTERN));
    }

    /**
     * 获取当前月份所载的日期
     *
     * @return 字符串格式的日期
     */
    public static String getCurrentDay() {
        LocalDate currentDate = LocalDate.now();
        return currentDate.format(DateTimeFormatter.ofPattern(DAY_PATTERN));
    }

    /**
     * 获取当前日期，格式为yyyy-MM-dd
     *
     * @return 字符串格式的日期
     */
    public static String getCurrentDate() {
        return LocalDate.now().toString();
    }

}
